package com.taotao.patient.mapper;

import com.taotao.patient.domain.request.MessageRequest;
import com.taotao.patient.domain.response.GroupResponse;
import com.taotao.patient.domain.response.MessageResponse;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface PatientMapper {

    /**
    * @Author ZhangYuQi
    * @Description 查询当前登录医生下所有分组及患者
    * @Date 上午10:58 2025/2/25
    * @Param [userId]
    * @return
    */
    List<GroupResponse> selectGroupsAndPatients(Long userId);

    /**
    * @Author ZhangYuQi
    * @Description 新增分组
    * @Date 上午11:04 2025/2/25
    * @Param [groupName, userId]
    * @return
    */
    void insertGroup(@Param("groupName") String groupName, @Param("userId") Long userId);

    /**
    * @Author ZhangYuQi
    * @Description 删除分组
    * @Date 上午11:08 2025/2/25
    * @Param [groupId]
    * @return
    */
    void deleteGroup(Long groupId);

    /**
    * @Author ZhangYuQi
    * @Description  删除分组下的患者
    * @Date 上午11:08 2025/2/25
    * @Param [groupId]
    * @return
    */
    void deletePatientByGroupId(Long groupId);

    /**
    * @Author ZhangYuQi
    * @Description 群发消息
    * @Date 上午11:24 2025/2/25
    * @Param [request]
    * @return
    */
    void insertMessage(@Param("messageContent") String messageContent, @Param("doctorId") Long doctorId);

    /**
    * @Author ZhangYuQi
    * @Description 历史消息记录
    * @Date 上午11:27 2025/2/25
    * @Param [id, userIds]
    * @return
    */
    void insertMessageHistory(@Param("messageId") Long messageId, @Param("userIds") List<Long> userIds);

    /**
    * @Author ZhangYuQi
    * @Description 查询历史消息记录
    * @Date 下午2:03 2025/2/25
    * @Param [userId]
    * @return
    */
    List<MessageResponse> selectMessageHistory(Long userId);

    /**
    * @Author ZhangYuQi
    * @Description 清空该医生下所有分组内的该患者
    * @Date 下午2:37 2025/2/25
    * @Param [userId, patientId]
    * @return
    */
    void deleteGroupUser(@Param("userId") Long userId, @Param("patientId") Long patientId);

    /**
    * @Author ZhangYuQi
    * @Description 将患者加入到新分组中
    * @Date 下午2:39 2025/2/25
    * @Param [patientId, groupIds]
    * @return
    */
    void insertGroupUser(@Param("patientId") Long patientId, @Param("groupIds") Long[] groupIds);
}
